home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / clarion / cw15 / help15.z / CLWDBH.HLP < prev    next >
Text File  |  1994-10-17  |  43KB  |  1,314 lines

  1. Hard mode help
  2. --------------
  3. 12345678901234567890123456789012345678901234567890
  4.  
  5. {100}  The windows help system can
  6.   not be activated  when the
  7.   debugger  has  suspended  a
  8.   program in  hard mode.
  9.  
  10. {101}  The windows help system can
  11.   not be  activated  when the
  12.   debugger  has  suspended  a
  13.   program in  hard mode.
  14.  
  15. {1}  GENERAL_CONTEXT
  16.  
  17. The Clarion for Windows Debugger
  18. This page describes the commands
  19. available in the Debugger. Help for
  20. dialog boxes is also available; a help
  21. topic jump appears next to each command
  22. that leads to a dialog box. You'll also
  23. find a list of "how to" topics following
  24. the command list:
  25.  
  26. Menu Commands:
  27.  
  28.  .   File Menu
  29.  
  30. File to Debug  Allows  you to choose  an
  31.                executable file  to  load
  32.                and  debug. Choose a file
  33.                from    the   Open   File
  34.                dialog.  When  you  start
  35.                the   Debugger  from  the
  36.                IDE,   it   automatically
  37.                loads   the   executable.
  38.                This  command allows  you
  39.                to   start  the  Debugger
  40.                first,  then load a  file
  41.                into  a (see also) source
  42.                code window.
  43. Load Redirection    Allows you to change
  44.                the Redirection file used
  45.                for  the current Debugger
  46.                session.  The Redirection
  47.                file  provides a list  of
  48.                directories to search for
  49.                libraries,  source  code,
  50.                and   debug   information
  51.                files.
  52. Debug Active DLL      Adds   a   related
  53.                dynamic    link   library
  54.                (*.DLL)   to  the   debug
  55.                session.  Choose  a  file
  56.                from   the   (see   also)
  57.                Active   Module   dialog.
  58.                This  option is available
  59.                for  hard  mode debugging
  60.                only.
  61. Sleeper Mode   Sets  the  Debugger  into
  62.                sleep  mode, in which  it
  63.                waits  for  a  protection
  64.                violation          (GPF),
  65.                ctrl+alt+sys req,  or  an
  66.                INT3.   This  option   is
  67.                available  for hard  mode
  68.                debugging only.
  69.                You    can   start    the
  70.                Debugger  in  sleep  mode
  71.                from the command line  by
  72.                adding  /s to the command
  73.                line.
  74. Add Sources    Allows   you   to    open
  75.                additional  source  files
  76.                for   the  current  debug
  77.                session.
  78. Exit           Closes the Debugger,  and
  79.                terminates the Debuggee.
  80. Restart        Continues   a  previously
  81.                terminated Debug session.
  82.                The Debugger will restart
  83.                with    previous    watch
  84.                expressions   and   break
  85.                points, provided that the
  86.                source   code   has   not
  87.                changed.
  88.  
  89.  .   Edit Menu
  90.  
  91. Find Text      Opens the (see also) Find
  92.                Text dialog, allowing you
  93.                to  search for text in  a
  94.                source code window.
  95. Find Next      Repeats  the  last   text
  96.                search.
  97. Find Procedure Opens the (see also) Find
  98.                Procedure  dialog,  which
  99.                allows  you to  choose  a
  100.                procedure from the  list,
  101.                then  locate  the  source
  102.                code for the procedure in
  103.                a source code window.
  104. Goto Line      Opens the (see also) Goto
  105.                Line dialog, which allows
  106.                you to move the selection
  107.                bar  to  the line  number
  108.                you specify.
  109. Current Line   Moves  the selection  bar
  110.                to      the     currently
  111.                executing  line  in   the
  112.                source code window.
  113. Find Last Error      Moves the selection
  114.                bar  to  the source  code
  115.                line  where the  Debugger
  116.                last  detected an  error.
  117.                See also Setup dialog.
  118. Breakpoints    Opens   the  (see   also)
  119.                Breakpoints dialog, which
  120.                allows    you   to    set
  121.                conditional            or
  122.                unconditional
  123.                breakpoints.  Breakpoints
  124.                allow       you        to
  125.                automatically        halt
  126.                execution at the line  of
  127.                code  at  which (or  near
  128.                which)   you  think   the
  129.                problem   occurs.    Your
  130.                program  runs up  to  the
  131.                breakpoint,  then   halts
  132.                and turns control back to
  133.                the   Debugger.  You  can
  134.                then  check the  contents
  135.                of      variables     and
  136.                expressions  to  identify
  137.                the cause of the problem
  138. Edit           Opens the (see also) Edit
  139.                Variable  dialog,   which
  140.                allows you to change  the
  141.                value of a variable while
  142.                the      Debuggee      is
  143.                suspended. You  can  then
  144.                resume execution to  test
  145.                the  program with the new
  146.                value.
  147.                You  must first select  a
  148.                variable  in  either  the
  149.                Global  Variables  window
  150.                or  the Active Procedures
  151.                window.
  152.  
  153.  .   ! Menus
  154.  
  155. The Go!, GoCursor!, Step!, and ProcStep!
  156. commands execute your application  while
  157. the   Debugger  monitors   it   in   the
  158. background. They allow you to test  your
  159. application  in a controlled environment
  160. which helps you identify bugs faster.
  161.  
  162. Tip: These  commands are all  top  level
  163.      menu  commands.  No pulldown  menus
  164.      appear  below them; just place  the
  165.      cursor  on  the  menu  command  and
  166.      click,   or  press  alt  plus   the
  167.      underlined letter to execute.
  168.  
  169. Go!            Runs  the  Debuggee  from
  170.                its  current state to the
  171.                next  breakpoint. When  a
  172.                source   or   disassembly
  173.                window is active,  the  g
  174.                key executes the command.
  175. GoCursor!      Runs  the  Debuggee  from
  176.                its  current state to the
  177.                currently selected source
  178.                or  assembler line in the
  179.                source      code       or
  180.                disassembly window.  When
  181.                a  source  or disassembly
  182.                window is active,  the  c
  183.                key executes the command.
  184. Step!          Runs  the  Debuggee  from
  185.                the   currently  selected
  186.                source or assembler line,
  187.                one  line  of code  at  a
  188.                time.  When a  source  or
  189.                disassembly   window   is
  190.                active,   the    s    key
  191.                executes the command.
  192. ProcStep!      Runs  the  Debuggee  from
  193.                the   currently  selected
  194.                source or assembler  line
  195.                to  the  next, but  skips
  196.                through  procedure  calls
  197.                without stopping. When  a
  198.                source   or   disassembly
  199.                window is active,  the  p
  200.                key executes the command.
  201.  
  202.  .   Options Menu
  203.  
  204. Soft Mode      Toggles  hard  and   soft
  205.                mode debugging.
  206.                In  soft  mode, when  the
  207.                Debuggee is suspended  in
  208.                the Debugger, part of the
  209.                Debugger will attempt  to
  210.                simulate the behavior  of
  211.                the Debuggee.
  212.                In  hard  mode, when  the
  213.                Debuggee is suspended  in
  214.                the  Debugger,  the  only
  215.                window to operate is  the
  216.                Debugger.    All    other
  217.                activity   is  suspended.
  218.                One  consequence of  this
  219.                is  that  the desktop  is
  220.                not redrawn.
  221. Clarion Soft Mode    The  Debugger  will
  222.                use  part of the  runtime
  223.                library  to simulate  the
  224.                behavior of the Debuggee.
  225.                This  is  the recommended
  226.                mode for most projects.
  227. Extended Stack Trace      Debugger shows
  228.                information         about
  229.                procedures when no  debug
  230.                information is available.
  231.                A    disassembly   window
  232.                opens,   containing   the
  233.                relevant segment.
  234. Disassembly On The       (see      also)
  235.                Disassembly        window
  236.                "shadows"   the    active
  237.                source  window. When  you
  238.                select  a line of source,
  239.                the    cursor   in    the
  240.                disassembly window  moves
  241.                to the line corresponding
  242.                to it.
  243.                This  menu  is  a  toggle
  244.                option.      If       the
  245.                disassembly   window   is
  246.                closed  when you turn  on
  247.                the  option, you can open
  248.                it  by double clicking on
  249.                a   source   line,   then
  250.                pressing  Cancel  in  the
  251.                Break Point dialog.
  252. Assembly Single  Step      Toggles  step
  253.                mode     for    assembler
  254.                breakpoints.         When
  255.                execution   reaches    an
  256.                assembler     breakpoint,
  257.                step mode is set on. When
  258.                execution    reaches    a
  259.                source   breakpoint,   it
  260.                turns off.
  261. Control Panel  Displays a toolbox window
  262.                with              buttons
  263.                corresponding to the four
  264.                Go!  commands.  The  next
  265.                time   the  Debuggee   is
  266.                suspended,  the   control
  267.                panel receives focus.
  268.                When  debugging  in  hard
  269.                mode, when you switch the
  270.                active window to the main
  271.                Debugger   window,    you
  272.                cannot access the control
  273.                panel.
  274. Setup          Opens   the  (see   also)
  275.                Setup dialog
  276. Custom Groups  Opens   the  (see   also)
  277.                Selective  Break   Points
  278.                dialog, which allows  you
  279.                to  customize the windows
  280.                message groups for  which
  281.                you  can  set conditional
  282.                break points.
  283. Custom Colors  Opens   the  (see   also)
  284.                Colors   dialog,    which
  285.                allows  you  to  set  the
  286.                Debugger selection colors
  287.                for   the   source   code
  288.                windows.
  289.  
  290.  .   Window Menu
  291.  
  292. Cascade        Resizes    the     active
  293.                windows, and places  them
  294.                in     an     overlapping
  295.                arrangement.
  296. Tile           Resizes    the     active
  297.                windows, and places  them
  298.                in an end to end vertical
  299.                arrangement.
  300. Tile Horizontal      Resizes the  active
  301.                windows, and places  them
  302.                in    an   end   to   end
  303.                horizontal arrangement.
  304. Arrange Icons  Arranges   the   iconized
  305.                windows and arranges them
  306.                at  them at the bottom of
  307.                the  Debugger application
  308.                frame.
  309. Registers      Opens   the  (see   also)
  310.                Registers  window,  which
  311.                shows     the     current
  312.                registers values.
  313. Library State  Opens   the  (see   also)
  314.                Library   window,   which
  315.                shows  the return  values
  316.                for    Clarion    library
  317.                functions.
  318. Windows Messages    Opens the (see also)
  319.                Windows  Messages window,
  320.                which displays up to  200
  321.                Windows          messages
  322.                generated by and sent  to
  323.                the Debuggee.
  324. Position Debuggee    Sizes  the Debuggee
  325.                to  the  maximum  desktop
  326.                area not taken up by  the
  327.                Debugger.  This  has   no
  328.                effect  when the Debugger
  329.                is maximized.
  330. Global Variables    Opens the (see also)
  331.                Global  Variables window,
  332.                which  shows the  current
  333.                value  of  each component
  334.                of each variable.
  335. Watch Expressions   Opens the (see also)
  336.                Watch Expressions window,
  337.                which  shows the  current
  338.                value  of  variables  and
  339.                expressions.
  340. Active Procedures   Opens the (see also)
  341.                Active Procedures window,
  342.                which lists the procedure
  343.                currently executing,  and
  344.                allows   you  to  monitor
  345.                nested procedure calls.
  346.  
  347.  {2} COLOR_CONTEXT
  348.  
  349.   The Colors Dialog
  350.  
  351. The Debugger displays the lines within a
  352. (see also) source code window in
  353. different colors, which you can
  354. customize. Select a radio button for the
  355. line type you wish, then choose a color
  356. from the list box.
  357.  
  358. You can specify colors for the Current
  359. Line, General Cursor, Inactive Code and
  360. Break Points.
  361.  
  362. You can also specify a Monochrome
  363. "color" scheme, by checking the box.
  364.  
  365.  {3} GROUP_CONTEXT
  366.  
  367.   The Selective Break Point Groups
  368.   Dialog
  369.  
  370. This allows you to set up your own
  371. custom message groups to watch. Type a
  372. name for the group, and choose the
  373. Windows messages from the listbox.
  374. When setting conditional breakpoints in
  375. the (see also) Break Point dialog, you
  376. can specify your custom group.
  377. Volume 3 of the Microsoft Windows 3.1
  378. Programmers Reference, published by
  379. Microsoft Press, devotes over 200 pages
  380. to lists and descriptions of all Windows
  381. messages.
  382.  
  383. {4} BREAKPOINT_CONTEXT
  384.  
  385.   The Break Point Dialog
  386.  
  387. This dialog is where you set
  388. breakpoints.
  389.  
  390. Normally, when debugging an application,
  391. you'll identify a small part of the
  392. program which produces incorrect output,
  393. or crashes. The Debugging process for
  394. this situation will probably require
  395. running just that part of the program,
  396. and stopping it at one or more points to
  397. check its status.
  398.  
  399. Breakpoints allow you to automatically
  400. halt execution at the line of code at
  401. which (or near which) you think the
  402. problem occurs. Your program runs up to
  403. the breakpoint, then halts and turns
  404. control back to the Debugger. You can
  405. then check the contents of variables and
  406. expressions to identify the cause of the
  407. problem, and step through from that
  408. point on. When in Step mode, the
  409. Debugger executes one source code
  410. statement, then returns control to the
  411. Debugger until you issue the next (see
  412. also the Step! command).
  413.  
  414. You can also set conditions on the
  415. breakpoint, telling the program to
  416. continue executing if the condition is
  417. false, or turning control over to the
  418. Debugger if true. After you set a
  419. breakpoint, the source code line where
  420. the breakpoint occurs appears in magenta
  421. in the source window. For "How To
  422. information, see also Setting
  423. a Conditional Breakpoint and
  424. Setting Conditional Breakpoints.
  425.  
  426. Break Kind     Choose the type of break.
  427.                Always  -  Specifies   an
  428.                unconditional break.  The
  429.                Debugger   will    always
  430.                suspend execution at this
  431.                point.
  432.                Watch  Expression  #0   -
  433.                Specifies  a break  based
  434.                on  the  contents  of   a
  435.                variable   in  the   (see
  436.                also)  Watch  Expressions
  437.                window.  Type the  number
  438.                of   the  variable   (its
  439.                place  in the Watch list)
  440.                in the Watch Number box.
  441.                Windows Message - Type in
  442.                a message name, or select
  443.                a  message from the combo
  444.                box.
  445.                Message Group - Choose  a
  446.                message  group.  A  group
  447.                can  indicate a  category
  448.                of   messages,  such   as
  449.                mouse  or  key  messages.
  450.                You  can  also set  up  a
  451.                custom  message group  in
  452.                the  (see also) Selective
  453.                Break     Point    Groups
  454.                dialog.    to    remember
  455.                several          specific
  456.                messages,  so  that   the
  457.                breakpoint   will   occur
  458.                only   on  one  of  these
  459.                messages.  For   example,
  460.                you    could   place    a
  461.                breakpoint  which  checks
  462.                for    a   WM_RBUTTONDOWN
  463.                message,  which  is   the
  464.                message   Windows   sends
  465.                when the user clicks  the
  466.                right  mouse  button   in
  467.                your window. When you run
  468.                the  program, you  right-
  469.                click   inside  it,   and
  470.                Windows      sends      a
  471.                WM_RBUTTONDOWN message to
  472.                your   application.   The
  473.                breakpoint      condition
  474.                would be true.
  475.                Message  Not In  Group  -
  476.                Choose a message group to
  477.                exclude.
  478. Remove         Removes    the   selected
  479.                break point.
  480. Custom Groups  Allows  you to  define  a
  481.                message  group  comprised
  482.                only   of   the   Windows
  483.                messages you want. Define
  484.                them  in  the (see  also)
  485.                Selective   Break   Point
  486.                Groups dialog.
  487.  
  488. {5} LOCATE_BREAK_CONTEXT
  489.  
  490.   The Break Points Dialog
  491.  
  492. This dialog presents active break points
  493. in a list. Its main function is to allow
  494. you to select a break point, then
  495. quickly highlight the source code line
  496. containing the break.
  497.  
  498. Locate         Activates the source code
  499.                window   and  moves   the
  500.                selection  bar   to   the
  501.                source  code  line  where
  502.                the   break   point    is
  503.                located.
  504. Delete         Deletes  the break  point
  505.                from the list.
  506. Edit           Opens   the  (see   also)
  507.                Break Point dialog.
  508.  
  509. {6} SELECT_SOURCE_CONTEXT
  510.  
  511.   The Sources to Include in Session
  512.   Dialog
  513.  
  514. This dialog allows you to add source
  515. code files to the Debug session.
  516. Only files for which you specified that
  517. the Project System includes debug
  518. information appears in the list. See
  519. also Preparing Your Projects for
  520. Debugging.
  521.  
  522. The buttons in the dialog allow you to
  523. select or de-select more than one file
  524. at a time. When you expand the dialog,
  525. two additional lists display the names
  526. of source code files selected or already
  527. in the session.
  528.  
  529. {7} INTERNAL_ERROR_CONTEXT
  530.  
  531.   Internal Error Dialog
  532.  
  533. This dialog indicates an error has
  534. occurred in the Debug session. The
  535. Debugger provides as much of a
  536. description as possible. In some cases,
  537. it may be necessary to exit Windows and
  538. reboot the machine before trying again.
  539.  
  540. {8} UNKNOWN_CONTEXT
  541.  
  542.   Unknown Error Dialog
  543.  
  544. This dialog indicates an error has
  545. occurred in the Debug session. Exit
  546. Windows and reboot the machine before
  547. trying again.
  548.  
  549. {10} LOAD_MODULE_DLL_CONTEXT  1
  550.  
  551.   Select Active Module Dialog
  552.  
  553. This dialog allows you to add a dynamic
  554. link library, if opened by the Debuggee,
  555. to the Debug session. If the .DLL
  556. contains debug information, you can view
  557. the source code.
  558.  
  559. You can specify in the (see also) Setup
  560. dialog whether to ignore the information
  561. in the .DLL file. Debugging the .DLL may
  562. increase the startup time for the Debug
  563. session.
  564.  
  565. {11} WATCH_CONTEXT            1
  566.  
  567.   The Watch Expression Dialog
  568.  
  569. The Watch Expression dialog allows you
  570. to add or edit a variable or expression
  571. in the (see also) Watch Expressions
  572. window.
  573.  
  574. Type an expression in the Expression to
  575. Evaluate field, then press the OK
  576. button. When the Debugger runs the
  577. program, it will test the expression
  578. upon reaching the breakpoint, and halt
  579. if the expression evaluates true.
  580.  
  581. The Watch Expression dialog also
  582. contains a Browse button, to help create
  583. your expression faster. Press the Browse
  584. button to see a list of the variables
  585. local to the procedure you're currently
  586. debugging.
  587.  
  588. You can prefix the variable name with a
  589. procedure name and/or a module name.
  590. This allows you to name a variable not
  591. currently in scope, for example, a
  592. variable in another procedure that would
  593. not be visible for the current
  594. procedure.
  595.  
  596.  .  To    specify   a   procedure    and
  597.      variable, prefix the variable  with
  598.      the  procedure name plus  a  period
  599.      (".").
  600.  
  601.     For    example,    "RoyalFlush.King"
  602.      refers to a variable called King in
  603.      the procedure called RoyalFlush.
  604.  
  605.  .  To   specify  a  module  and  global
  606.      variable, prefix the variable  with
  607.      the module name plus a dot (".").
  608.     For    example,   "NewDeal.Shuffled"
  609.      refers  to a global variable called
  610.      Shuffled   in  the  module   called
  611.      NewDeal.
  612.  
  613.  .  To  specify  a local variable  in  a
  614.      procedure   in   another    module,
  615.      combine the prefixes.
  616.  
  617.     For example,
  618.      "Poker.RoyalFlush:King"  refers  to
  619.      the  variable called  King  in  the
  620.      procedure called RoyalFlush in  the
  621.      module called Poker.
  622.  
  623.  .  You  may specify register names (for
  624.      example, ax) in a watch expression.
  625.  
  626.  .  You  may use the unary operator (  @
  627.      ) to denote the address of a memory
  628.      object.
  629.  
  630. Tip: The  Debugger will guess the  right
  631.      prefix if the variable is unique.
  632.  
  633. The following list presents the
  634. operators and expression syntax for the
  635. Watch Expression dialog. The operators
  636. are language independent, derived from
  637. C/C++, and Modula 2/Pascal operators.
  638.  
  639.      Key       Function
  640.      +         add
  641.      -         subtract
  642.      *         multiply
  643.      / or DIV  divide
  644.      % or MOD  modulus (remainder)
  645.      |          bitwise OR
  646.      &         bitwise AND
  647.      <         less than
  648.      <=        less than or equal to
  649.      >         greater than
  650.      >=        greater than or equal to
  651.      =         equal
  652.      != or <>  not equal
  653.      ! or NOT  logical NOT
  654.      & or AND  logical AND
  655.      | or OR    logical OR
  656.      *         indirection (when prefix)
  657.      ^         indirection (when post-
  658.      fix)
  659.      ->        point at member
  660.      .         select member (record
  661.      field)
  662.      ::={e,d}  display expression e as
  663.                if it was the same type d
  664.  
  665. {13} SETUP
  666.  
  667.   The Setup Dialog
  668.  
  669. This dialog allows you to select various
  670. options which carry over from Debugger
  671. session to session.
  672.  
  673. Ignore .DLL Files       Instructs    the
  674.                Debugger to ignore  debug
  675.                information    in    .DLL
  676.                files.  This reduces  the
  677.                startup   time  for   the
  678.                Debugger. See also Select
  679.                Active Module dialog.
  680. Disable Kernel Msgs  If  you are running
  681.                the   Debug  version   of
  682.                Windows (available in the
  683.                Microsoft   Windows   3.1
  684.                SDK),  the Debugger  will
  685.                automatically trap  error
  686.                messages  posted  by  the
  687.                kernel (one of the  three
  688.                main     dynamic     link
  689.                libraries   utilized   by
  690.                Windows). You can  locate
  691.                such errors with the Find
  692.                Last Error command.
  693.                If  you are not using the
  694.                AUX   device  to   report
  695.                messages,  add  the  line
  696.                OutputTo=NUL    in    the
  697.                [DEBUG]  section of  your
  698.                SYSTEM.INI file.
  699. Report Missing Source      The  Debugger
  700.                automatically prompts for
  701.                source   code  files   it
  702.                cannot locate.
  703. Iconize When Inactive      Automatically
  704.                iconizes   the   Debugger
  705.                when   the  Debuggee   is
  706.                active.
  707. Debugger On Top     The Debugger appears
  708.                on  top an any other open
  709.                windows    when   active;
  710.                relevant  for  hard  mode
  711.                debugging only.
  712.  
  713. Tip: When  working in Hard mode, type  d
  714.      to bring the Debugger to the top.
  715.  
  716. Disassembly Opcodes    The   disassembly
  717.                window  contains only  op
  718.                codes,  eliminating   the
  719.                space  taken up by binary
  720.                codes.
  721. Smart Single Stepping     When  enabled,
  722.                single stepping on a line
  723.                with   a  procedure  call
  724.                will   load   the   debug
  725.                information    for    the
  726.                target   procedure,    if
  727.                available.  This   option
  728.                extends  to  .DLL's  with
  729.                debug information.
  730. No Horizontal Scroll        Hides    the
  731.                horizontal       Debugger
  732.                scroll bars.
  733. Global Find Text     When disabled, each
  734.                source window "remembers"
  735.                its   own   search   text
  736.                string. When enabled, the
  737.                default search text  will
  738.                be  the same as the  last
  739.                search, regardless of the
  740.                window.
  741. Order Record Fields  When  enabled,   it
  742.                orders     the     RECORD
  743.                variables    by    memory
  744.                address.
  745. Auto Tile      Tiles  the open  Debugger
  746.                windows.
  747. Clean Desktop  When     enabled,      it
  748.                minimizes    all    other
  749.                running      applications
  750.                (other than the debuggee)
  751.                when     the     debugger
  752.                activates.
  753. Max Source Windows  Self explanatory.
  754. Max Disassembly     Self explanatory.
  755.  
  756. {14} FIND_TEXT
  757.  
  758.   The Find Text Dialog
  759.  
  760. This dialog allows you to search for
  761. text within the source code document(s).
  762. Type the text to search for in the edit
  763. box, then press the Find button.
  764.  
  765. {15} ABOUT_CONTEXT            1
  766.  
  767.   The About Dialog
  768.  
  769. This dialog provides a copyright screen
  770. for the Debugger.
  771.  
  772. {16} EDIT_VAR_CONTEXT         1
  773.  
  774.   The Edit Variable Dialog
  775.  
  776. This dialog allows you to change the
  777. value of a variable at run time.
  778. Type in a new value and press the OK
  779. button.
  780. See also Editing Variables at Runtime
  781.  
  782. {17} GOTO_LINE_CONTEXT        1
  783.  
  784.   The GoTo Line Dialog
  785.  
  786. This dialog allows you to move the
  787. selection bar to the source code line
  788. number you specify.
  789.  
  790. Type the number of the line in the edit
  791. box, then press the OK button.
  792.  
  793. {18} FIND_PROCEDURE_CONTEXT   1
  794.  
  795.   The Find Procedure Dialog
  796.  
  797. This dialog allows you to move the
  798. selection bar to the source code line at
  799. which the procedure you select begins.
  800. Select a procedure name from the list,
  801. then press the Locate button.
  802.  
  803. {21} SOURCE_WINDOW            2
  804.  
  805.   The Source Window
  806.  
  807. The source windows display the source
  808. code documents. The title bar shows the
  809. document file name. By default, the
  810. current line cursor is green. When you
  811. select a line other than the current,
  812. the cursor is light cyan.
  813.  
  814. Tip: If   the   Debugger  opens  without
  815.      listing  any source code  documents
  816.      in   the  (see  also)  Sources   to
  817.      include in this session dialog, the
  818.      most probable cause is that none of
  819.      the source code files listed in the
  820.      Project   Tree   contained    debug
  821.      information. Check for .DAD  files,
  822.      which     contain     the     debug
  823.      information.
  824.  
  825. ins inserts an unconditional break point
  826. at the cursor. del removes one. Pressing
  827. the space bar displays the Break Point
  828. dialog.
  829.  
  830. {22} DISASSEMBLY_WINDOW       2
  831.  
  832.   The Disassembly Window
  833.  
  834. The Disassembly window display the
  835. machine instructions for the active
  836. module.
  837.  
  838. If you run the Debugger on a program
  839. with no debug information, the
  840. Disassembly window automatically
  841. displays the assembly language
  842. instructions. The current instruction is
  843. selected.
  844.  
  845. double-clicking (or pressing enter) on a
  846. line in the Disassembly window which
  847. contains a jump or call instruction
  848. moves the cursor to the target location.
  849. esc returns the cursor to the original
  850. location.
  851.  
  852. ins inserts an unconditional break point
  853. at the cursor. del removes one. Pressing
  854. the space bar displays the (see also)
  855. Break Point dialog.
  856.  
  857. {23} GLOBAL_WINDOW            2
  858.  
  859.   The Global Variables Window
  860.  
  861. The Global Variables window shows you
  862. the current value of each component of
  863. each variable. For example, for a string
  864. variable of eighteen characters,
  865. eighteen separate lines show the
  866. contents of the each position of the
  867. string. The variables window contains
  868. tree controls, so that you can expand
  869. only the variables you want to examine.
  870. Each variable has a tree control to
  871. expand its listing. The top level is the
  872. source code module which contains the
  873. variable. The next is the variable name.
  874.  
  875. {24} ACTIVE_PROCEDURE_WINDOW  2
  876.  
  877.   The Active Procedures Window
  878.  
  879. The Active Procedures window lists the
  880. procedure currently executing, which
  881. allows you to monitor nested procedure
  882. calls. The window appears in tree
  883. format. The upper levels represent the
  884. names of procedures and the lower levels
  885. represent the variables. double-clicking
  886. on an active procedure displays the
  887. source or disassembly. double-clicking
  888. on a variable copies it to the (see
  889. also) Watch Expressions dialog.
  890. When working with more than one (see
  891. also) THREAD, the Active Procedures
  892. window displays information for the
  893. current thread only.
  894.  
  895. {25} WATCH_WINDOW             2
  896.  
  897.   The Watch Expressions Window
  898.  
  899. The Watch Expressions window shows the
  900. current value of variables and
  901. expressions. Set a watch expression to
  902. see how a variable or expression changes
  903. as your program executes.
  904.  
  905. See also the Watch Expression dialog to
  906. learn the syntax for watch expressions,
  907. and how to edit an expression in the
  908. list. To add a variable to the watch
  909. list:
  910.  
  911. 1.   double-click  on an empty  line  in
  912.      the Watch window.
  913. 2.   When  the Watch Expressions  dialog
  914.      appears,  type a variable name  (as
  915.      it  appears in the global variables
  916.      list) and press OK.
  917. 3.   Alternatively,  press  the   Browse
  918.      button, select a variable from  the
  919.      list, then press OK twice.
  920.  
  921. The  expression or variable  appears  in
  922. the   watch  window,  and  its   current
  923. contents appear next to it.
  924.  
  925. You can also add a variable to the watch
  926. window by double-clicking or pressing
  927. enter on a variable in either the global
  928. variables or the active procedures
  929. windows.
  930.  
  931. You can add a watch expression by double-
  932. clicking on an empty line in the Watch
  933. Expressions window, then specify an
  934. expression in the Watch Expression
  935. dialog.
  936.  
  937. Tip: To   quickly   add   a   structured
  938.      variable (such as a record,  string
  939.      or array) to the watch list, double-
  940.      click on it in the Global Variables
  941.      or  Active Procedures windows, then
  942.      press  the Copy Variable  to  Watch
  943.      button.
  944.  
  945. {26} MESSAGE_WINDOW           2
  946.  
  947.   The Message Window
  948.  
  949. The Messages window displays up to the
  950. most recent 200 message events generated
  951. by or directed to your application. The
  952. Debugger adds a separator line ("-----")
  953. to indicate a breakpoint occurred.
  954. Every action the user takes_from mouse
  955. movement to menu commands_is first
  956. processed by Windows. If Windows
  957. determines the action is for your
  958. application, it passes the information
  959. to your application via a message. For
  960. example, if the user types the letter
  961. "A," it sends a WM_KEYDOWN message to
  962. your application, with the key code for
  963. "A" as the first message parameter.
  964. See the Break Point dialog for
  965. information on selecting Windows
  966. messages to break on.
  967.  
  968. Tip: If you include DDE services in your
  969.      application,  we recommend  testing
  970.      your  application with another  DDE
  971.      application and monitoring the  DDE
  972.      messages.  For further information,
  973.      see   the  Microsoft  Windows   3.1
  974.      Programmers  Reference,  Volume  3,
  975.      available from Microsoft Press.
  976.  
  977. {27} CLARION_LIBRARY_WINDOW
  978.  
  979.   The Library Window
  980.  
  981. The Library window displays return
  982. values for Clarion library functions.
  983. These functions represent all the field
  984. and other events. Functions include (see
  985. also) ACCEPTED, (see also) SELECTED,
  986. (see also) FIELD, (see also) FOCUS, (see
  987. also) FIRST-FIELD, (see also) LASTFIELD,
  988. (see also) ERRORCODE, AND (see also)
  989. ERRORFILE.
  990.  
  991. The names listed in EQUATES.CLW and
  992. KEYCODES.CLW appear next to the return
  993. values.
  994.  
  995. {28} REGISTER_WINDOW
  996.  
  997.   The Registers Window
  998.  
  999. The Registers window shows the current
  1000. register values; the register appears in
  1001. the left column, and its value to the
  1002. right.
  1003.  
  1004. {29} SETTING_UNCONDITIONAL_BREAKPOINTS
  1005.  
  1006.   Setting Unconditional Breakpoints
  1007. Normally, when debugging an application,
  1008. you'll identify a small part of the
  1009. program which produces incorrect output,
  1010. or crashes. The Debugging process for
  1011. this situation will probably require
  1012. running just that part of the program,
  1013. and stopping it at one or more points to
  1014. check its status.
  1015.  
  1016. Breakpoints allow you to automatically
  1017. halt execution at the line of code at
  1018. which (or near which) you think the
  1019. problem occurs. Your program runs up to
  1020. the breakpoint, then halts and turns
  1021. control back to the Debugger. You can
  1022. then check the contents of variables and
  1023. expressions to identify the cause of the
  1024. problem, and step through from that
  1025. point on. When in Step mode, the
  1026. Debugger executes one source code
  1027. statement, then returns control to the
  1028. Debugger until you issue the next Step!
  1029. command.
  1030.  
  1031. When you set a breakpoint, the source
  1032. code line where the breakpoint occurs
  1033. appears in magenta in the source window.
  1034. An unconditional or "sticky" breakpoint
  1035. is placed on a source code line, and
  1036. stops execution whenever the program
  1037. encounters that statement. To add an
  1038. unconditional breakpoint:
  1039.  
  1040. 1.   Open the (see also) source code  or
  1041.      disassembly window.
  1042. 2.   Locate the line of code to break on
  1043.      and double-click on it.
  1044. 3.   When  the  (see also)  Break  point
  1045.      dialog  appears, select Always  and
  1046.      press the OK button.
  1047.  
  1048. When you execute the Go! command, the
  1049. Debuggee runs until it reaches the
  1050. breakpoint, then stop.
  1051.  
  1052. {30} SETTING_CONDITIONAL_BREAKPOINTS
  1053.  
  1054.   Setting Conditional Breakpoints
  1055.  
  1056. To narrow the search for bugs, you can
  1057. tell the Debugger to break only when a
  1058. certain condition exists. The condition
  1059. takes the form of an expression which
  1060. can include program variables, operators
  1061. and constants. You can also tell the
  1062. Debugger to break when it detects a
  1063. particular message or messages from
  1064. Windows to the application.
  1065.  
  1066.  .  To  set a conditional breakpoint  on
  1067.      a  change  in  a watch expression's
  1068.      value:
  1069.  
  1070. 1.   Establish  a  watch  expression  as
  1071.      described  in the (see also)  Watch
  1072.      Expression dialog, below.
  1073. 2.   Locate the line of code to break on
  1074.      and double-click on it.
  1075. 3.   When  the  (see also)  Break  point
  1076.      dialog   appears,   select    Watch
  1077.      Expression #0.
  1078. 4.   Type   the  number  of  the   watch
  1079.      expression    (from    the    watch
  1080.      expressions window) in the  Watch#0
  1081.      field.
  1082. 5.   Press the OK button.
  1083.  
  1084. When  you  execute the Go! command,  the
  1085. program   runs  until  it  reaches   the
  1086. breakpoint,    evaluates    the    watch
  1087. expression, then stops if the expression
  1088. is  true,  i.e., evaluates to a non-zero
  1089. value.
  1090.  
  1091. For example, if variable X should have a
  1092. maximum value of 999, but increments  to
  1093. 1000 anyway, causing havoc, you can tell
  1094. the  Debugger to break at 999, then step
  1095. through the program to see when and  how
  1096. it reaches 1000.
  1097.  
  1098.  .  To  set a breakpoint conditional  on
  1099.      a specific Windows message:
  1100.  
  1101. 1.   Locate  a line of code to break  on
  1102.      and double-click on it.
  1103. 2.   When   the   Break   point   dialog
  1104.      appears, select Windows Message.
  1105. 3.   Select  a Windows message from  the
  1106.      Windows Message combo box.
  1107. 4.   Press the OK button.
  1108.  
  1109. For   example,   you   could   place   a
  1110. breakpoint in a loop which checks for  a
  1111. WM_RBUTTONDOWN  message,  which  is  the
  1112. message  Windows  sends  when  the  user
  1113. clicks  the right mouse button  in  your
  1114. window.  When  you run the program,  you
  1115. right-click inside it, and Windows sends
  1116. a   WM_RBUTTONDOWN   message   to   your
  1117. application.  The  breakpoint  condition
  1118. would be true.
  1119.  
  1120.  .  To  set a breakpoint conditional (or
  1121.      not)  on  receipt of one of several
  1122.      Windows messages:
  1123. 1.   Locate the line of code to break at
  1124.      and double-click on it.
  1125. 2.   When   the   Break   point   dialog
  1126.      appears,  select Message Group;  or
  1127.      Message Not in Group.
  1128. 3.   Select  a  message group  from  the
  1129.      list.  This can indicate a category
  1130.      of  messages, such as mouse or  key
  1131.      messages.  You can also  set  up  a
  1132.      custom  message group (by  pressing
  1133.      the   Custom   Groups  button)   to
  1134.      remember several specific messages,
  1135.      so  that the breakpoint will  occur
  1136.      only on one of these messages.
  1137. 4.   Press the OK button.
  1138.  
  1139. For   example,   you   could   place   a
  1140. breakpoint in a loop which checks for  a
  1141. Key  message. When you run the  program,
  1142. when  you press a key, Windows  sends  a
  1143. message  to  your application,  and  the
  1144. breakpoint condition would be true.
  1145.  
  1146.  .  To  set  a  breakpoint which  breaks
  1147.      when   you  receive  an  unexpected
  1148.      message, that is, one that  doesn't
  1149.      belong to a group you specify:
  1150. 1.   Locate  the line of code  at  which
  1151.      you    want   to   establish    the
  1152.      breakpoint and double-click it.
  1153. 2.   When   the   Break   point   dialog
  1154.      appears, select Message Group.
  1155. 3.   Select  a  message group  from  the
  1156.      combo  box.  The  breakpoint   then
  1157.      occurs  only  when the  application
  1158.      receives  a  message  not  in  this
  1159.      group.
  1160. 4.   Press the OK button.
  1161.  
  1162. {31} EDITING_VARS_AT_RUNTIME
  1163.  
  1164.   Editing Variables at Runtime
  1165.  
  1166. Using  the Debugger, you can change  the
  1167. value  contained  in a  memory  variable
  1168. while the program is suspended. You  can
  1169. then   resume   the  program   to   test
  1170. execution  with the variable  containing
  1171. the new value.
  1172.  
  1173. To change the contents of the variable:
  1174.  
  1175. 1.   Select  the variable in either  the
  1176.      (see also) Global Variables or  the
  1177.      (see    also)   Active   Procedures
  1178.      windows.
  1179. 2.   Press f2, or choose Edit ä Edit.
  1180. The  (see  also)  Edit  Variable  dialog
  1181. appears.
  1182. 3.   Type  a  new value for the variable
  1183.      and press the OK button.
  1184.      When  you  choose  Go!,  GoCursor!,
  1185.      Step!,  or  ProcStep!, the  program
  1186.      resumes  execution with the  memory
  1187.      variable   changed   to   the   new
  1188.      variable.
  1189.  
  1190. {32} PREPARING_FOR_DEBUGGING
  1191.  
  1192.   Preparing Your Projects for Debugging
  1193.  
  1194. The Project System allows you to set the
  1195. debug global options in the Global
  1196. Options dialog, in the IDE. To create an
  1197. .EXE file to debug, do the following in
  1198. the IDE, before launching the Debugger:
  1199.  
  1200. 1.   Create your project file, and  make
  1201.      it the current project.
  1202. 2.   Choose   Project  ä  Edit   Current
  1203.      Project  to  view the Project  Tree
  1204.      dialog.
  1205. 3.   Select  the top level of the  tree,
  1206.      which   holds  the  name   of   the
  1207.      project,  and press the  Properties
  1208.      button.
  1209. 4.   When   the  Global  Options  dialog
  1210.      appears, mark the Full checkbox  in
  1211.      the Debug Information group box.
  1212. 5.   Optionally  check the Line  Numbers
  1213.      box.
  1214. 6.   Press  the  OK button to close  the
  1215.      dialog.
  1216. 7.   Press   the  Make  button  on   the
  1217.      toolbar  to  compile and  link  the
  1218.      application.
  1219.  
  1220. The application now includes the
  1221. information the Debugger needs.
  1222. You can also turn on debugging
  1223. information for a single module in the
  1224. project. The advantage of this is that
  1225. it reduces the overhead for the
  1226. debugger. To do so, do the following in
  1227. the IDE, before launching the Debugger:
  1228.  
  1229. 1.   Create your project file, and  make
  1230.      it  the current project (the  Using
  1231.      the Project System chapter explains
  1232.      how).
  1233. 2.   Choose   Project  ä  Edit   Current
  1234.      Project  to  view the Project  Tree
  1235.      dialog.
  1236. 3.   Select  only the source module  you
  1237.      need   to  debug,  and  press   the
  1238.      Properties button.
  1239. 4.   When  the  Compile  Options  dialog
  1240.      appears, mark the Full checkbox  in
  1241.      the Debug Information group box.
  1242. 5.   Check the Line Numbers box.
  1243. 6.   Press  the  OK button to close  the
  1244.      dialog.
  1245. 7.   Press   the  Make  button  on   the
  1246.      toolbar  to  compile and  link  the
  1247.      application.
  1248.  
  1249. This includes debug information for that
  1250. module only.
  1251.  
  1252. The Debugger runs as a separate
  1253. application, but you can start it either
  1254. inside the IDE, or directly from
  1255. Windows.
  1256.  
  1257.  .  To  start  the Debugger  inside  the
  1258.      IDE, either:
  1259.  
  1260. 1.   Either  choose Project ä  Debug  or
  1261.      compile  and  link your application
  1262.      by pressing the Make button.
  1263. 2.   With  the  Compile  results  dialog
  1264.      still open, press the Debug button.
  1265.  
  1266.  .  To  start  the Debugger as a  normal
  1267.      application.
  1268.  
  1269. 1.   Switch to Program Manager and  open
  1270.      the Clarion group.
  1271. 2.   double-click the Debugger icon.
  1272. If  you wish to start the Debugger  from
  1273. another program launcher the application
  1274. file name is CLWDB.EXE.
  1275. 3.   With  the Debugger launched, choose
  1276.      File  ä  File to Debug, then choose
  1277.      an  .EXE  file  in  the  Open  File
  1278.      dialog.
  1279.  
  1280. You can load the debugger, then debug  a
  1281. program  which was launched even  before
  1282. you  loaded the debugger. This is useful
  1283. for  situations where the program  under
  1284. development  unexpectedly  "misbehaves,"
  1285. but hasn't yet produced a fatal error.
  1286. To do so, start the debugger and execute
  1287. the  File  to Debug command. Choose  the
  1288. .EXE  file for the running program  from
  1289. the  Open File dialog. The debugger will
  1290. ask  you  to  confirm that you  wish  to
  1291. debug a running program.
  1292.  
  1293. When  you  launch the Debugger from  the
  1294. Compile Results dialog, you must confirm
  1295. the name of the source code files.
  1296.  
  1297.  .  To  load  the source files when  the
  1298.      Debugger appears:
  1299.  
  1300. 1.   Select the source code files in the
  1301.      (see  also)  Sources to include  in
  1302.      session dialog.
  1303. The  debug  information file stores  the
  1304. files you select between debug sessions.
  1305. 2.   Press the OK button.
  1306. The Debugger windows appear.
  1307. If  the  application  does  not  include
  1308. debug  information, the  Debugger  skips
  1309. this   step  and  opens  a  (see   also)
  1310. disassembly window.
  1311.  
  1312. asdfasdasd
  1313.  
  1314.